{
    "id": "addons",
    "type": "application",
    "value": {
        "author": "Sander Mertens",
        "description": "Test project for flecs addons",
        "public": false,
        "coverage": false,
        "use": [
            "flecs"
        ]
    },
    "test": {
        "testsuites": [{
            "id": "Parser",
            "testcases": [
                "resolve_this",
                "resolve_wildcard",
                "resolve_any",
                "resolve_is_a",
                "0",
                "component_implicit_subject",
                "component_explicit_subject",
                "component_explicit_subject_this",
                "component_explicit_subject_this_by_name",
                "component_explicit_subject_this_by_var_name",
                "component_explicit_subject_wildcard",
                "component_explicit_subject_any",
                "component_explicit_subject_0",
                "this_as_predicate",
                "this_var_as_predicate",
                "this_lowercase_var_as_predicate",
                "this_as_object",
                "this_var_as_object",
                "pair_implicit_subject",
                "pair_implicit_subject_wildcard_pred",
                "pair_implicit_subject_wildcard_obj",
                "pair_implicit_subject_any_pred",
                "pair_implicit_subject_any_obj",
                "pair_implicit_subject_this_pred",
                "pair_implicit_subject_this_obj",
                "pair_implicit_subject_pred_w_self",
                "pair_implicit_subject_obj_w_self",
                "pair_implicit_subject_pred_w_up",
                "pair_implicit_subject_obj_w_up",
                "pair_implicit_subject_pred_w_self_up",
                "pair_implicit_subject_obj_w_self_up",
                "pair_implicit_subject_pred_w_up_trav",
                "pair_implicit_subject_obj_w_up_trav",
                "pair_implicit_subject_pred_w_invalid_flags",
                "pair_implicit_subject_obj_w_invalid_flags",
                "pair_explicit_subject",
                "pair_explicit_subject_this",
                "pair_explicit_subject_this_by_name",
                "pair_explicit_subject_this_by_var_name",
                "pair_explicit_subject_wildcard_pred",
                "pair_explicit_subject_wildcard_subj",
                "pair_explicit_subject_wildcard_obj",
                "pair_implicit_subject_0_object",
                "pair_explicit_subject_0_object",
                "pair_explicit_subject_0",
                "in_component_implicit_subject",
                "in_component_explicit_subject",
                "in_pair_implicit_subject",
                "in_pair_explicit_subject",
                "inout_component_implicit_subject",
                "inout_component_explicit_subject",
                "inout_pair_implicit_subject",
                "inout_pair_explicit_subject",   
                "out_component_implicit_subject",
                "out_component_explicit_subject",
                "out_pair_implicit_subject",
                "out_pair_explicit_subject",
                "inout_filter_component",
                "component_singleton",
                "this_singleton",
                "component_implicit_no_subject",
                "component_explicit_no_subject",
                "pair_no_subject",
                "variable_single_char",
                "variable_multi_char",
                "variable_multi_char_w_underscore",
                "variable_multi_char_w_number",
                "variable_multi_char_not_allcaps",
                "pred_var",
                "obj_var",
                "component_not",
                "pair_implicit_subject_not",
                "pair_explicit_subject_not",
                "2_component_not",
                "2_component_not_no_space",
                "component_optional",
                "2_component_optional",
                "2_component_optional_no_space",
                "from_and",
                "from_or",
                "from_not",
                "pair_implicit_subject_optional",
                "pair_explicit_subject_optional",                
                "pred_implicit_subject_w_role",
                "pred_explicit_subject_w_role",
                "pred_no_subject_w_role",
                "pair_implicit_subject_w_role",
                "pair_explicit_subject_w_role",
                "inout_role_pred_implicit_subject",
                "inout_role_pred_no_subject",
                "inout_role_pred_explicit_subject",
                "inout_role_pair_implicit_subject",
                "inout_role_pair_explicit_subject",
                "2_pred_implicit_subject",
                "2_pred_no_subject",
                "2_pred_explicit_subject",
                "2_pair_implicit_subject",
                "2_pair_explicit_subject",
                "2_pred_role",
                "2_pair_implicit_subj_role",
                "2_pair_explicit_subj_role",
                "2_or_pred_implicit_subj",
                "2_or_pred_explicit_subj",
                "2_or_pair_implicit_subj",
                "2_or_pair_explicit_subj",
                "2_or_pred_inout",
                "1_digit_pred_implicit_subj",
                "1_digit_pred_no_subj",
                "1_digit_pred_explicit_subj",
                "1_digit_pair_implicit_subj",
                "1_digit_pair_explicit_subj",
                "pred_implicit_subject_self",
                "pred_implicit_subject_superset",
                "pred_implicit_subject_subset",
                "pred_implicit_subject_superset_inclusive",
                "pred_implicit_subject_subset_inclusive",
                "pred_implicit_subject_superset_cascade",
                "pred_implicit_subject_subset_cascade",
                "pred_implicit_subject_superset_inclusive_cascade",
                "pred_implicit_subject_subset_inclusive_cascade",
                "pred_implicit_subject_implicit_superset_cascade",         
                "pred_implicit_subject_implicit_superset_inclusive_cascade",
                "pred_implicit_subject_implicit_superset_cascade_w_rel",         
                "pred_implicit_subject_implicit_superset_inclusive_cascade_w_rel",
                "pred_implicit_subject_superset_childof",
                "pred_implicit_subject_cascade_superset_childof",
                "pred_implicit_subject_superset_cascade_childof",
                "pred_implicit_subject_superset_cascade_childof_optional",
                "expr_w_symbol",
                "expr_w_newline",
                "subj_entity_w_explicit_self",
                "subj_entity_w_explicit_self_superset",
                "subj_entity_w_explicit_superset_relation",
                "subj_entity_w_explicit_self_superset_relation",
                "obj_entity_w_explicit_self",
                "obj_entity_w_explicit_self_superset",
                "obj_entity_w_explicit_superset_relation",
                "obj_entity_w_explicit_self_superset_relation",
                "pred_entity_w_explicit_self",
                "pred_entity_w_explicit_self_superset",
                "pred_entity_w_explicit_superset_relation",
                "pred_entity_w_explicit_self_superset_relation",
                "pred_entity_no_args_w_explicit_self",
                "pred_entity_no_args_w_explicit_self_superset",
                "pred_entity_no_args_w_explicit_superset_relation",
                "pred_entity_no_args_w_explicit_self_superset_relation",
                "pred_entity_no_args_2_terms_w_explicit_self",
                "pred_entity_no_args_2_terms_w_explicit_self_superset",
                "pred_entity_no_args_2_terms_w_explicit_superset_relation",
                "pred_entity_no_args_2_terms_w_explicit_self_superset_relation",
                "newline",
                "2_newlines",
                "3_newlines",
                "space",
                "2_spaces",
                "trailing_newline",
                "2_trailing_newlines",
                "trailing_space",
                "2_trailing_spaces",
                "template_type",
                "predicate_w_parens",
                "not_alive_pred",
                "not_alive_subj",
                "not_alive_obj",
                "this_subj_var_kind",
                "this_obj_var_kind",
                "this_subj_obj_var_kind",
                "var_w_name",
                "entity_pred_no_name",
                "entity_subj_no_name",
                "entity_obj_no_name",
                "this_pred_no_name",
                "this_subj_no_name",
                "this_obj_no_name",
                "auto_object_variable",
                "auto_object_variable_w_subj",
                "auto_scoped_variable",
                "invalid_variable_only",
                "oneof_self_pred_w_relative_obj",
                "oneof_other_pred_w_relative_obj",
                "oneof_self_pred_w_invalid_obj",
                "oneof_other_pred_w_invalid_obj",
                "pair_implicit_src_missing_rel",
                "pair_implicit_src_missing_obj",
                "pair_explicit_src_missing_src",
                "pair_explicit_src_missing_obj",
                "eq_id",
                "eq_id_var",
                "eq_var_id",
                "eq_var",
                "neq_id",
                "neq_id_var",
                "neq_var_id",
                "neq_var",
                "eq_name",
                "eq_name_var",
                "eq_var_name",
                "eq_var",
                "neq_name",
                "neq_name_var",
                "neq_var_name",
                "neq_var",
                "match_name",
                "match_name_var",
                "match_var_name",
                "match_var",
                "nmatch_name",
                "nmatch_name_var",
                "nmatch_var_name",
                "eq_same_var",
                "neq_same_var",
                "eq_same_var_this",
                "neq_same_var_this",
                "eq_w_optional",
                "neq_w_optional",
                "match_w_optional",
                "query_scope_1_term",
                "query_scope_1_term_spaces",
                "query_scope_2_terms",
                "query_nested_scope",
                "query_nested_scope_spaces",
                "query_scope_unbalanced",
                "query_not_scope",
                "query_empty_scope",
                "query_scope_newline_after_open",
                "query_scope_newline_after_close",
                "override_tag",
                "override_pair",
                "pair_3_args",
                "pair_3_args_implicit_this",
                "pair_4_args",
                "pair_4_args_implicit_this",
                "pair_3_args_2_terms",
                "pair_3_args_this_tgt",
                "pair_3_args_2_terms_this_tgt",
                "pair_3_args_2_terms_this_tgt_implicit_this",
                "pair_3_or_args",
                "pair_3_or_args_implicit_this",
                "pair_4_or_args",
                "pair_4_or_args_implicit_this",
                "pair_or_before_and_oper",
                "pair_and_before_or_oper",
                "cascade_desc",
                "newline_after_inout",
                "newline_after_term_open",
                "newline_after_term_src",
                "newline_after_term_src_pair",
                "newline_after_term_pair_comma",
                "newline_after_term_pair_second"
            ]
        }, {
            "id": "Plecs",
            "testcases": [
                "null",
                "empty",
                "space",
                "space_newline",
                "two_empty_newlines",
                "three_empty_newlines",
                "newline_trailing_space",
                "newline_trailing_spaces",
                "multiple_trailing_newlines",
                "entity",
                "entity_w_entity",
                "entity_w_pair",
                "2_entities",
                "2_entities_w_entities",
                "3_entities_w_pairs",
                "line_comment",
                "line_comment_before_stmt",
                "line_comment_after_stmt",
                "line_comment_between_stmt",
                "multiple_line_comment",
                "line_comment_after_stmt_same_line",
                "comma_separated_pred",
                "comma_separated_pred_w_subj",
                "comma_separated_pred_w_subj_obj",
                "comma_separated_pred_trailing_comma",
                "comma_separated_pred_trailing_comma_newline",
                "comma_separated_pred_trailing_comma_newline_multiline",
                "hierarchy_1_child",
                "hierarchy_2_children",
                "hierarchy_1_child_same_line",
                "hierarchy_2_children_same_line",
                "entity_after_hierarchy",
                "newline_before_scope_open",
                "comment_before_scope_open",
                "comment_after_newline_before_scope_open",
                "hierarchy_2_levels",
                "hierarchy_2_levels_2_subtrees",
                "missing_end_of_scope",
                "missing_end_of_predicate_scope",
                "create_in_scope",
                "hierarchy_w_pred_subj",
                "hierarchy_custom_relation",
                "hierarchy_custom_relation_2_levels",
                "hierarchy_custom_relation_apply_to_object",
                "hierarchy_custom_relation_apply_to_object_2_levels",
                "entity_after_hierarchy_custom_relation",
                "entity_after_hierarchy_custom_relation_2_levels",
                "pred_scope",
                "pred_scope_2_levels",
                "pred_scope_inside_with",
                "pred_scope_nested_w_subj_scope",
                "with_tag",
                "with_tag_2_entities",
                "with_tag_same_line",
                "with_tag_2_entities_same_line",
                "with_tag_2_levels",
                "with_tag_2_levels_2_subtrees",
                "with_n_tags",
                "with_n_tags_2_levels",
                "with_after_scope",
                "with_after_with",
                "scope_inside_with_inside_scope",
                "with_inside_scope",
                "assignment_w_1",
                "assignment_w_2",
                "assignment_w_pair",
                "assignment_w_invalid_subject",
                "assignment_w_invalid_with",
                "inherit_w_colon",
                "inherit_w_colon_w_scope",
                "inherit_w_colon_w_assign",
                "assign_component_value",
                "assign_2_component_values",
                "assign_component_value_in_assign_scope",
                "assign_2_component_values_in_assign_scope",
                "type_and_assign_in_plecs",
                "type_and_assign_in_plecs_w_2_members",
                "type_and_assign_in_plecs_w_3_members",
                "type_and_assign_in_plecs_w_enum",
                "type_and_assign_in_plecs_w_enum_using_meta",
                "type_and_assign_in_plecs_w_enum_primitive_using_meta",
                "type_and_assign_in_plecs_w_enum_primitive_and_struct",
                "type_and_assign_in_plecs_nested_member",
                "dot_assign_nested_member",
                "dot_assign_binary_expr",
                "open_scope_no_parent",
                "create_subject_in_root_scope_w_resolvable_id",
                "create_subject_in_scope_w_resolvable_id",
                "create_subject_in_scope_w_resolvable_id_using",
                "using_scope",
                "using_nested_scope",
                "using_nested_in_scope",
                "using_with_scope",
                "using_w_entity_ref_in_value_2_members",
                "using_w_entity_ref_in_value_3_members",
                "2_using_scope",
                "2_using_in_different_scope",
                "empty_scope_after_using",
                "assignment_to_non_component",
                "struct_w_member_w_assignment_to_nothing",
                "struct_w_member_w_assignment_to_empty_scope",
                "scope_after_assign",
                "assign_after_inherit",
                "multiple_assignments_single_line",
                "2_stmts_in_scope_w_no_parent",
                "scope_after_assign_1_tag",
                "scope_after_assign_2_tags",
                "invalid_nested_assignment",
                "invalid_partial_pair_assignment",
                "empty_assignment",
                "assign_tag_to_parent",
                "assign_component_to_parent",
                "empty_assignment_before_end_of_scope",
                "assign_to_parent_pair_w_new_entities_in_scope",
                "assign_to_parent_pair_w_existing_entities_in_scope",
                "default_child_component",
                "default_child_component_w_assign",
                "struct_type_w_default_child_component",
                "struct_type_w_default_child_component_nested_member",
                "enum_type_w_default_child_component",
                "default_type_from_with",
                "scope_w_1_subj_and_2_pairs",
                "inherit_from_multiple",
                "assign_pair_component",
                "assign_pair_component_in_scope",
                "assign_pair_component_in_script",
                "assign_pair_component_in_script_update",
                "set_entity_names",
                "oneof",
                "invalid_oneof",
                "brief_annotation",
                "name_annotation",
                "link_annotation",
                "color_annotation",
                "multiple_annotations",
                "annotation_w_trailing_space",
                "multiline_string",
                "unterminated_multiline_string",
                "declaration_w_underscore_name",
                "annotate_declaration",
                "anonymous_entity",
                "anonymous_entity_in_scope",
                "anonymous_declaration",
                "const_var_int",
                "const_var_float",
                "const_var_bool",
                "const_var_string",
                "const_var_struct",
                "const_var_redeclare",
                "const_var_scoped",
                "assign_component_from_var",
                "assign_component_from_var_in_scope",
                "scope_w_component_after_const_var",
                "component_after_const_paren_expr",
                "component_after_const_add_expr",
                "component_after_const_sub_expr",
                "component_after_const_mul_expr",
                "component_after_const_div_expr",
                "parse_with",
                "parse_with_w_with",
                "parse_with_w_tag",
                "parse_with_value",
                "parse_with_2_values",
                "parse_with_2_nested_values",
                "parse_with_var",
                "parse_with_2_vars",
                "parse_with_2_nested_vars",
                "parse_with_var_in_scope",
                "assign_const_w_expr",
                "const_w_type",
                "assembly_no_scope",
                "assembly_empty",
                "assembly_no_props",
                "assembly_prop_no_type",
                "assembly_prop_no_default",
                "assembly_prop",
                "assembly_prop_space_colon",
                "assembly_2_props",
                "assembly_instance_w_default_values",
                "assembly_instance_w_assign_default_values",
                "assembly_instance_w_overridden_values",
                "assembly_w_child",
                "assembly_w_child_parse_script",
                "assembly_w_child_parse_script_twice",
                "assembly_w_child_update_after_parse",
                "assembly_w_nested_child",
                "assembly_w_prefab",
                "assembly_w_prefab_tree",
                "assembly_w_nested_assembly",
                "instantiate_prefab_w_assembly",
                "assembly_w_prefab_w_assembly",
                "3_assemblies",
                "assembly_nested_w_default_var",
                "assembly_w_anonymous",
                "assembly_w_anonymous_parse_again",
                "typed_const_w_composite_type_invalid_assignment",
                "typed_const_w_composite_type",
                "assign_var_to_typed_const_w_composite_type",
                "typed_const_w_composite_type_invalid_assignment",
                "assembly_w_composite_prop_invalid_assignment",
                "assembly_w_composite_prop",
                "assembly_with_with",
                "using_wildcard",
                "single_line_comment_in_value",
                "single_line_comment_in_value_after_scope",
                "multi_line_comment_in_value",
                "multi_line_comment_in_value_after_scope",
                "unterminated_multi_line_comment_in_value",
                "module_stmt",
                "nested_module_stmt",
                "module_stmt_w_scope",
                "module_stmt_w_nested_scope",
                "module_w_assembly",
                "module_w_nested_assembly",
                "assign_singleton_tag",
                "assign_singleton_component",
                "assign_singleton_tag_w_scope",
                "assign_singleton_2_tags_w_scope",
                "assign_singleton_component_w_scope",
                "assign_singleton_2_components_w_scope",
                "with_pair_in_scope",
                "assembly_redeclare_prop_as_const",
                "assembly_redeclare_prop_as_prop",
                "assembly_redeclare_const_as_const",
                "add_auto_override",
                "add_auto_override_pair",
                "scope_w_auto_override",
                "scope_w_auto_override_pair",
                "pair_w_rel_var",
                "pair_w_tgt_var",
                "assembly_w_pair_w_this_var",
                "with_value_not_a_component",
                "component_in_with_scope",
                "component_in_with_scope_nested",
                "component_in_with_scope_in_scope",
                "assign_after_with_in_scope",
                "array_component"
            ]
        }, {
            "id": "Doc",
            "testcases": [
                "get_set_name",
                "get_entity_name",
                "get_set_brief",
                "get_set_detail",
                "get_set_link",
                "set_name_nullptr",
                "set_brief_nullptr",
                "set_detail_nullptr",
                "set_link_nullptr",
                "set_color_nullptr"
            ]
        }, {
            "id": "Pipeline",
            "testcases": [
                "system_order_same_phase",
                "system_order_same_phase_after_disable",
                "system_order_same_phase_after_activate",
                "system_order_different_phase",
                "system_order_different_phase_after_disable",
                "system_order_different_phase_after_activate",
                "system_order_after_new_system_lower_id",
                "system_order_after_new_system_inbetween_id",
                "system_order_after_new_system_higher_id",
                "system_reverse_order_by_phase_custom_pipeline",
                "merge_after_staged_out",
                "merge_after_not_out",
                "no_merge_after_main_out",
                "merge_after_staged_in_out",
                "merge_after_staged_inout_main_implicit_inout",
                "merge_after_staged_inout_main_inout",
                "merge_after_staged_out_before_owned",
                "switch_pipeline",
                "run_pipeline",
                "get_pipeline_from_stage",
                "3_systems_3_types",
                "random_read_after_random_write_out_in",
                "random_read_after_random_write_inout_in",
                "random_read_after_random_write_out_inout",
                "random_read_after_random_write_inout_inout",
                "random_read_after_random_write_w_not_write",
                "random_read_after_random_write_w_not_read",
                "random_read_after_random_write_w_wildcard",
                "random_in_after_random_inout_after_random_out",
                "stage_write_before_read",
                "mixed_multithreaded",
		        "mixed_multithreaded_tasks",
                "mixed_staging",
                "no_staging_system_create_query",
                "single_threaded_pipeline_change",
                "multi_threaded_pipeline_change",
                "multi_threaded_pipeline_change_tasks",
                "activate_after_add",
                "match_all_after_pipeline_rebuild",
                "empty_pipeline",
                "custom_pipeline_w_system_macro",
                "pipeline_w_short_notation",
                "stack_allocator_after_progress",
                "stack_allocator_after_progress_w_pipeline_change",
                "iter_from_world_in_singlethread_system_multitead_app",
		        "iter_from_world_in_singlethread_system_multitead_app_tasks",
                "no_staging_after_inactive_system",
                "inactive_system_after_no_staging_system_no_defer_w_filter",
                "inactive_system_after_2_no_staging_system_no_defer_w_filter",
                "inactive_system_after_no_staging_system_no_defer_w_filter_w_no_staging_at_end",
                "inactive_multithread_system_after_no_staging_system_no_defer",
		        "inactive_multithread_tasks_system_after_no_staging_system_no_defer",
                "inactive_multithread_system_after_no_staging_system_no_defer_w_no_staging_at_end",
                "inactive_multithread_tasks_system_after_no_staging_system_no_defer_w_no_staging_at_end",
                "multi_threaded_pipeline_change_w_only_singlethreaded",
                "multi_threaded_tasks_pipeline_change_w_only_singlethreaded",
                "sync_after_not_out_for_out",
                "pair_wildcard_read_after_staged_write",
                "pair_read_after_staged_wildcard_write",
                "no_sync_after_pair_wildcard_read_after_unmatching_staged_write",
                "no_merge_after_from_nothing_w_default_inout",
                "on_merge_activate_system_before_merge",
                "disable_phase",
                "disable_parent",
                "multi_threaded_no_staging_w_add_after_read",
                "multi_threaded_tasks_no_staging_w_add_after_read",
                "1_startup_system",
                "2_startup_systems",
                "2_startup_phases",
                "2_startup_systems_w_merge",
                "inactive_last_system_merge_count",
                "inactive_middle_system_merge_count",
                "last_no_readonly_system_merge_count",
                "2_pipelines_1_system",
                "builtin_pipeline_w_self_system_term",
                "custom_pipeline_w_self_system_term",
                "switch_from_threads_to_tasks",
                "switch_from_tasks_to_threads",
                "run_pipeline_multithreaded",
                "run_pipeline_multithreaded_tasks",
                "pipeline_init_no_terms",
                "pipeline_init_no_system_term"
            ]
        }, {
            "id": "SystemMisc",
            "testcases": [
                "invalid_not_without_id",
                "invalid_optional_without_id",
                "invalid_entity_without_id",
                "invalid_empty_without_id",
                "invalid_empty_element",
                "invalid_empty_element_w_space",
                "invalid_empty_or",
                "invalid_empty_or_w_space",
                "invalid_or_w_not",
                "invalid_not_w_or",
                "invalid_0_w_and",
                "invalid_0_w_from_entity",
                "invalid_component_id",
                "invalid_entity_id",
                "invalid_null_string",
                "invalid_empty_string",
                "invalid_empty_string_w_space",        
                "redefine_row_system",
                "system_w_or_prefab",
                "system_w_or_disabled",
                "system_w_or_disabled_and_prefab",
                "table_columns_access",
                "dont_enable_after_rematch",
                "ensure_single_merge",
                "table_count",
                "match_system",
                "system_initial_state",
                "add_own_component",
                "change_system_action",
                "system_readeactivate",
                "system_readeactivate_w_2_systems",
                "add_to_system_in_progress",
                "redefine_null_signature",
                "redefine_0_signature",
                "one_named_column_of_two",
                "two_named_columns_of_two",
                "redeclare_system_explicit_id",
                "redeclare_system_explicit_id_null_expr",
                "redeclare_system_explicit_id_no_name",
                "declare_different_id_same_name",
                "declare_different_id_same_name_w_scope",
                "rw_in_implicit_any",
                "rw_in_implicit_shared",
                "rw_in_implicit_from_empty",
                "rw_in_implicit_from_entity",
                "rw_out_explicit_any",
                "rw_out_explicit_shared",
                "rw_out_explicit_from_empty",
                "rw_out_explicit_from_entity",
                "activate_system_for_table_w_n_pairs",
                "get_query",
                "set_get_context",
                "set_get_binding_context",
                "deactivate_after_disable",
                "delete_system",
                "delete_pipeline_system",
                "delete_system_w_ctx",
                "update_ctx",
                "run_custom_run_action",
                "run_w_offset_limit_custom_run_action",
                "pipeline_custom_run_action",
                "change_custom_run_action",
                "custom_run_action_call_next",
                "system_w_short_notation",
                "update_interval_w_system_init",
                "update_rate_w_system_init",
                "system_w_interval_rate_stop_timer",
                "system_same_interval_same_tick"
            ]
        }, {
            "id": "RulesBasic",
            "testcases": [
                "1_fact_w_tag",
                "1_fact_w_component",
                "1_fact_w_tag_pair",
                "1_fact_w_component_pair",
                "2_facts_same_src_w_tag",
                "2_facts_same_src_w_component",
                "2_facts_same_src_w_tag_pair",
                "2_facts_same_src_w_component_pair",
                "2_facts_other_src_w_tag",
                "2_facts_other_src_w_component",
                "2_facts_other_src_w_tag_pair",
                "2_facts_other_src_w_component_pair",
                "1_fact_w_any",
                "1_fact_w_pair_any_tgt",
                "1_fact_w_pair_any_rel",
                "1_fact_w_pair_any_rel_tgt",
                "2_facts_same_src_w_any",
                "2_facts_same_src_w_pair_any_tgt",
                "2_facts_same_src_w_pair_any_rel",
                "2_facts_same_src_w_pair_any_rel_tgt",
                "2_facts_other_src_w_any",
                "2_facts_other_src_w_pair_any_tgt",
                "2_facts_other_src_w_pair_any_rel",
                "2_facts_other_src_w_pair_any_rel_tgt",
                "1_this_src_w_tag",
                "1_this_src_w_component",
                "1_this_src_w_tag_pair",
                "1_this_src_w_component_pair",
                "1_this_src_w_tag_2_tables",
                "1_this_src_w_component_2_tables",
                "1_this_src_w_tag_pair_2_tables",
                "1_this_src_w_component_pair_2_tables",
                "2_this_src_w_tag",
                "2_this_src_w_component",
                "2_this_src_ent_src_w_tag",
                "2_this_src_ent_src_w_component",
                "2_ent_src_this_src_w_tag",
                "2_ent_src_this_src_w_component",
                "recycled_tag",
                "recycled_src",
                "recycled_pair_rel",
                "recycled_pair_tgt",
                "this_src_w_wildcard",
                "this_src_w_pair_rel_wildcard",
                "this_src_w_pair_tgt_wildcard",
                "this_src_w_pair_rel_tgt_wildcard",
                "this_src_w_any",
                "this_src_w_any_written",
                "this_src_w_pair_rel_any",
                "this_src_w_pair_tgt_any",
                "this_src_w_pair_rel_tgt_any",
                "ent_src_w_wildcard",
                "ent_src_w_pair_rel_wildcard",
                "ent_src_w_pair_tgt_wildcard",
                "ent_src_w_pair_rel_tgt_wildcard",
                "1_wildcard_src",
                "1_wildcard_src_w_pair",
                "2_wildcard_src",
                "2_wildcard_src_w_pair",
                "1_wildcard_src_w_pair_tgt_var",
                "1_wildcard_src_w_pair_rel_var",
                "1_wildcard_src_w_pair_tgt_this",
                "1_wildcard_src_w_pair_rel_this",
                "1_any_src",
                "1_any_src_component",
                "1_any_src_component_w_this_component",
                "1_any_src_w_pair",
                "2_any_src",
                "2_any_src_w_pair",
                "1_any_src_w_pair_tgt_var",
                "1_any_src_w_pair_rel_var",
                "1_any_src_w_pair_tgt_this",
                "1_any_src_w_pair_rel_this",
                "1_any_src_any_tgt_w_rel_fixed",
                "1_any_src_any_rel_w_tgt_fixed",
                "1_any_src_w_childof_pair_any_tgt",
                "1_any_src_empty",
                "1_any_src_pair_tgt_wildcard_empty",
                "1_any_src_pair_rel_wildcard_empty",
                "1_any_src_any_tgt_w_rel_fixed_empty",
                "1_any_src_any_rel_w_tgt_fixed_empty",
                "1_any_src_pair_w_tag_query_empty",
                "1_any_src_tag_w_pair_query_empty",
                "not_any",
                "rule_w_iter_next",
                "empty_rule",
                "invalid_rule",
                "not_instanced_table_src",
                "not_instanced_entity_src",
                "not_instanced_mixed_src",
                "instanced_table_src",
                "instanced_entity_src",
                "instanced_mixed_src",
                "in_term",
                "out_term",
                "inout_term",
                "nodata_term",
                "find_this_lowercase",
                "find_this_uppercase",
                "find_this_tgt_lowercase",
                "find_this_tgt_uppercase",
                "get_filter",
                "iter_empty_source",
                "iter_empty_source_2_terms",
                "iter_empty_source_wildcard",
                "iter_empty_source_pair",
                "iter_empty_source_pair_wildcard",
                "iter_empty_source_2_terms_pair",
                "iter_empty_source_2_terms_mixed",
                "iter_empty_source_2_terms_mixed_pair",
                "iter_empty_source_2_terms_mixed_pair_wildcard",
                "this_var_w_empty_entity",
                "match_disabled",
                "match_prefab",
                "match_disabled_prefab",
                "match_disabled_this_tgt",
                "match_prefab_this_tgt",
                "match_disabled_prefab_this_tgt",
                "match_self_disabled",
                "match_self_prefab",
                "match_self_disabled_prefab",
                "inout_none_first_term",
                "inout_none_second_term",
                "no_data_rule",
                "frame_offset",
                "frame_offset_no_data",
                "match_empty_tables",
                "match_empty_tables_no_data",
                "match_empty_tables_w_not",
                "match_empty_tables_w_wildcard",
                "match_empty_tables_w_no_empty_tables",
                "match_empty_tables_trivial",
                "oneof_wildcard",
                "oneof_any",
                "instanced_w_singleton",
                "instanced_w_base",
                "not_instanced_w_singleton",
                "not_instanced_w_base",
                "unknown_before_known",
                "unknown_before_known_after_or",
                "unknown_before_known_after_not",
                "unknown_before_known_after_optional",
                "unknown_before_known_after_scope",
                "reordered_plan_1",
                "reordered_plan_2",
                "1_trivial_plan",
                "2_trivial_plan",
                "1_trivial_plan_component",
                "2_trivial_plan_component",
                "2_trivial_plan_w_wildcard",
                "3_trivial_plan_w_pair",
                "3_trivial_plan_w_wildcard",
                "3_trivial_plan_w_any",
                "3_trivial_plan_w_pair_component",
                "3_trivial_plan_w_wildcard_component",
                "3_trivial_plan_w_any_component",
                "1_trivial_component_w_none",
                "2_trivial_component_w_none",
                "2_trivial_mixed_2_tables",
                "2_trivial_mixed_2_tables_component",
                "2_trivial_mixed_2_tables_wildcard",
                "1_plan_any_src",
                "1_plan_not_any_src",
                "1_plan_optional_any_src"
            ]
        }, {
            "id": "RulesVariables",
            "testcases": [
                "1_ent_src_w_var",
                "1_ent_src_w_pair_rel_var",
                "1_ent_src_w_pair_tgt_var",
                "1_ent_src_w_pair_rel_tgt_var",
                "1_ent_src_w_pair_rel_tgt_same_var",
                "1_ent_src_w_pair_rel_tgt_same_var_after_write",
                "1_this_src_w_var",
                "1_this_src_w_pair_rel_var",
                "1_this_src_w_pair_tgt_var",
                "1_this_src_w_pair_rel_tgt_var",
                "1_this_src_w_pair_rel_tgt_same_var",
                "1_this_src_w_pair_rel_tgt_same_var_after_write",
                "1_src_id_same_var",
                "1_src_pair_first_same_var",
                "1_src_pair_second_same_var",
                "1_src_pair_first_and_second_same_var",
                "1_src_id_same_var_after_write",
                "1_src_pair_first_same_var_after_write",
                "1_src_pair_second_same_var_after_write",
                "1_src_pair_first_and_second_same_var_after_write",
                "1_src_pair_first_same_var_this",
                "1_src_pair_second_same_var_this",
                "1_src_pair_first_and_second_same_var_this",
                "1_src_id_same_var_this_after_write",
                "1_src_pair_first_same_var_this_after_write",
                "1_src_pair_second_same_var_this_after_write",
                "1_src_pair_first_and_second_same_var_this_after_write",
                "1_ent_src_w_this_var",
                "1_ent_src_w_pair_this_rel",
                "1_ent_src_w_pair_this_tgt",
                "1_ent_src_w_pair_this_rel_tgt",
                "1_this_src_w_this",
                "1_this_src_w_pair_this_rel_tgt",
                "1_this_src_w_this_after_write",
                "1_this_src_w_pair_this_rel_tgt_after_write",
                "2_constrain_src_from_src",
                "2_constrain_rel_from_src_w_ent",
                "2_constrain_rel_from_src_w_var",
                "2_constrain_rel_from_src_w_this",
                "2_constrain_pair_rel_from_src_w_ent",
                "2_constrain_pair_rel_from_src_w_var",
                "2_constrain_pair_rel_from_src_w_this",
                "2_constrain_pair_tgt_from_src_w_ent",
                "2_constrain_pair_tgt_from_src_w_var",
                "2_constrain_pair_tgt_from_src_w_this",
                "2_constrain_pair_rel_tgt_from_src_w_ent",
                "2_constrain_pair_rel_tgt_from_src_w_var",
                "2_constrain_pair_rel_tgt_from_src_w_this",
                "1_ent_src_set_rel_var",
                "1_ent_src_set_pair_rel_var",
                "1_ent_src_set_pair_tgt_var",
                "1_set_src_var",
                "1_set_src_var_w_pair",
                "1_set_src_var_w_pair_set_rel",
                "1_set_src_var_w_pair_set_tgt",
                "1_set_src_var_w_pair_set_rel_tgt",
                "1_set_src_this",
                "1_set_src_this_w_pair",
                "1_set_src_this_w_pair_set_rel",
                "1_set_src_this_w_pair_set_tgt",
                "1_set_src_this_w_pair_set_rel_tgt",
                "1_set_src_this_to_empty_table",
                "1_set_src_this_to_empty_table_w_component",
                "1_set_src_this_to_empty_table_w_component_self",
                "1_set_src_this_to_entiy_in_table",
                "1_set_src_this_to_entiy_in_table_self",
                "2_set_src_this",
                "2_set_src_this_self",
                "2_set_src_this_component",
                "2_set_src_this_self_component",
                "2_set_src_this_w_up",
                "2_set_src_this_self_w_up",
                "2_set_src_this_component_w_up",
                "2_set_src_this_self_component_w_up",
                "2_set_src_this_w_exclusive_wildcard",
                "2_set_src_this_self_w_exclusive_wildcard",
                "1_src_this_var_as_entity",
                "1_src_this_var_as_table",
                "1_src_this_var_as_table_range",
                "2_join_by_rel_var",
                "2_join_by_pair_rel_var",
                "2_join_by_pair_tgt_var",
                "2_cycle_w_var",
                "2_cycle_w_this_var",
                "2_cycle_w_var_this",
                "2_cycle_pair_w_var",
                "2_cycle_pair_w_this_var_var",
                "2_cycle_pair_w_var_this_var",
                "2_cycle_pair_w_var_var_this",
                "2_cycle_pair_ent_var_var",
                "2_cycle_pair_ent_this_var",
                "2_cycle_pair_ent_var_this",
                "parse_0_var",
                "parse_1_var",
                "parse_2_vars",
                "parse_0_var_paren",
                "parse_1_var_paren",
                "parse_2_vars_paren",
                "parse_1_vars_w_path",
                "parse_missing_close_paren",
                "parse_missing_open_paren",
                "parse_missing_value",
                "parse_0_var_w_spaces",
                "parse_1_var_w_spaces",
                "parse_2_vars_w_spaces",
                "parse_0_var_paren_w_spaces",
                "parse_1_var_paren_w_spaces",
                "parse_2_vars_paren_w_spaces",
                "var_count",
                "var_name",
                "var_is_entity",
                "no_this_anonymous_src",
                "no_this_anonymous_src_w_pair",
                "no_this_anonymous_component_src",
                "no_this_anonymous_component_src_w_pair",
                "lookup_from_table_this",
                "lookup_from_entity_this",
                "lookup_from_table",
                "lookup_from_entity",
                "lookup_from_not_written",
                "lookup_from_table_this_component",
                "lookup_from_entity_this_component",
                "lookup_from_table_component",
                "lookup_from_entity_component",
                "lookup_from_table_two_children",
                "lookup_from_entity_two_children",
                "lookup_from_table_same_child_twice",
                "lookup_from_entity_same_child_twice",
                "lookup_from_table_not",
                "lookup_from_entity_not",
                "lookup_from_table_w_any_component",
                "lookup_from_entity_w_any_component",
                "lookup_as_tag",
                "lookup_as_relationship",
                "lookup_as_target",
                "lookup_assign_var",
                "lookup_eq_var",
                "lookup_neq_var",
                "check_vars_this",
                "check_vars_var",
                "check_vars_wildcard",
                "check_vars_any",
                "check_vars_var_as_tgt",
                "check_vars_this_as_tgt",
                "check_vars_anonymous_var_as_tgt",
                "check_vars_wildcard_as_tgt",
                "check_vars_any_as_tgt",
                "check_vars_this_w_lookup_var",
                "check_vars_var_w_lookup_var",
                "1_trivial_1_var",
                "2_trivial_1_var",
                "1_trivial_1_var_component",
                "2_trivial_1_var_component",
                "1_trivial_1_wildcard",
                "2_trivial_1_wildcard",
                "1_trivial_1_wildcard_component",
                "2_trivial_1_wildcard_component",
                "1_trivial_1_any",
                "2_trivial_1_any",
                "1_trivial_1_any_component",
                "2_trivial_1_any_component"
            ]
        }, {
            "id": "RulesOperators",
            "testcases": [
                "2_and_not",
                "3_and_not_not",
                "2_and_not_pair_rel_wildcard",
                "2_and_not_pair_tgt_wildcard",
                "2_and_not_pair_rel_tgt_wildcard",
                "2_and_not_pair_rel_var",
                "2_and_not_pair_tgt_var",
                "2_and_not_pair_rel_tgt_var",
                "2_and_not_pair_rel_tgt_same_var",
                "2_and_not_pair_rel_var_written",
                "2_and_not_pair_tgt_var_written",
                "2_and_not_pair_rel_tgt_var_written",
                "2_and_not_pair_rel_tgt_same_var_written",
                "2_and_not_pair_rel_src_tgt_same_var_written",
                "2_and_not_pair_any_rel",
                "2_and_not_pair_any_tgt",
                "2_and_not_pair_any_src",
                "1_not_any_src_fixed_first",
                "1_not_any_src_any_tgt_fixed_first",
                "1_not_any_src_any_first_fixed_tgt",
                "1_not_any_src_any_childof_pair_any_tgt",
                "1_not_any_src_any_isa_pair_any_tgt",
                "2_and_optional",
                "3_and_optional_optional",
                "2_and_optional_pair_rel_wildcard",
                "2_and_optional_pair_tgt_wildcard",
                "2_and_optional_pair_rel_var",
                "2_and_optional_pair_tgt_var",
                "2_and_optional_pair_rel_tgt_var",
                "2_and_optional_pair_rel_tgt_same_var",
                "2_and_optional_pair_rel_var_written",
                "2_and_optional_pair_tgt_var_written",
                "2_and_optional_pair_rel_tgt_var_written",
                "2_and_optional_pair_rel_tgt_same_var_written",
                "2_and_optional_pair_rel_src_tgt_same_var_written",
                "3_and_optional_optional_pair_w_var",
                "2_and_optional_pair_any_rel",
                "2_and_optional_pair_any_tgt",
                "2_and_optional_pair_any_src",
                "3_and_optional_dependent_and_pair_rel",
                "3_and_optional_dependent_and_pair_tgt",
                "3_and_optional_dependent_and_pair_rel_tgt",
                "3_and_optional_dependent_and_pair_rel_tgt_same_var",
                "3_and_optional_dependent_and_pair_rel_tgt_same_other_var",
                "3_and_optional_dependent_and_pair_src",
                "3_and_optional_dependent_optional_pair_rel",
                "3_and_optional_dependent_optional_pair_tgt",
                "3_and_optional_dependent_optional_pair_src",
                "3_and_optional_dependent_not_pair_rel",
                "3_and_optional_dependent_not_pair_tgt",
                "3_and_optional_dependent_not_pair_src",
                "1_optional_any_src_fixed_first",
                "1_optional_any_src_any_tgt_fixed_first",
                "1_optional_any_src_any_first_fixed_tgt",
                "1_optional_any_src_any_childof_pair_any_tgt",
                "1_optional_any_src_any_isa_pair_any_tgt",
                "2_or",
                "3_or",
                "2_or_written",
                "3_or_written",
                "2_or_written_w_rel_var",
                "3_or_written_w_rel_var",
                "2_or_written_w_tgt_var",
                "2_or_written_w_rel_tgt_var",
                "2_or_written_w_rel_tgt_same_var",
                "3_or_written_w_tgt_var",
                "2_or_chains",
                "2_or_chains_written",
                "2_or_dependent",
                "2_or_dependent_reverse",
                "2_or_dependent_2_vars",
                "2_or_written_dependent",
                "2_or_written_dependent_2_vars",
                "2_or_w_dependent",
                "2_or_w_both",
                "3_or_w_both",
                "2_not_first",
                "2_optional_first",
                "root_entities_empty",
                "root_entities",
                "root_entities_w_children",
                "root_entities_w_optional_children",
                "core_entities_w_optional_children",
                "root_entities_w_not_children",
                "core_entities_w_not_children",
                "1_ent_src_not",
                "1_ent_src_not_pair",
                "1_ent_src_not_pair_rel_wildcard",
                "1_ent_src_not_pair_tgt_wildcard",
                "1_ent_src_not_pair_rel_tgt_wildcard",
                "1_ent_src_not_pair_rel_any",
                "1_ent_src_not_pair_tgt_any",
                "1_ent_src_not_pair_rel_tgt_any",
                "1_ent_src_not_pair_rel_var",
                "1_ent_src_not_pair_tgt_var",
                "1_ent_src_not_pair_rel_tgt_var",
                "1_ent_src_not_pair_rel_tgt_same_var",
                "1_this_src_not_pair_rel_var",
                "1_this_src_not_pair_tgt_var",
                "1_this_src_not_pair_rel_tgt_var",
                "1_this_src_not_pair_rel_tgt_same_var",
                "1_ent_src_not_pair_rel_var_written",
                "1_ent_src_not_pair_tgt_var_written",
                "1_ent_src_not_pair_rel_tgt_var_written",
                "1_ent_src_not_pair_rel_tgt_same_var_written"
            ]
        }, {
            "id": "RulesTransitive",
            "testcases": [
                "1_fact_0_lvl_true",
                "1_fact_1_lvl_true",
                "1_fact_2_lvl_true",
                "1_fact_0_lvl_false",
                "1_fact_1_lvl_false",
                "1_fact_2_lvl_false",
                "1_fact_reflexive",
                "1_this_src_written_0_lvl",
                "1_this_src_written_1_lvl",
                "1_this_src_written_2_lvl",
                "1_this_src_written_reflexive",
                "1_this_src_0_lvl",
                "1_this_src_1_lvl",
                "1_this_src_2_lvl",
                "1_this_src_reflexive",
                "1_ent_src_tgt_var_0_lvl",
                "1_ent_src_tgt_var_1_lvl",
                "1_ent_src_tgt_var_2_lvl",
                "1_ent_src_tgt_var_reflexive",
                "1_this_src_tgt_var",
                "1_this_src_tgt_var_reflexive",
                "1_var_src_written_0_lvl",
                "1_var_src_written_1_lvl",
                "1_var_src_written_2_lvl",
                "1_var_src_written_reflexive",
                "1_var_src_0_lvl",
                "1_var_src_1_lvl",
                "1_var_src_2_lvl",
                "1_var_src_reflexive",
                "1_var_src_tgt_var",
                "1_var_src_tgt_var_reflexive",
                "1_ent_src_tgt_this_0_lvl",
                "1_ent_src_tgt_this_1_lvl",
                "1_ent_src_tgt_this_2_lvl",
                "1_ent_src_tgt_this_reflexive",
                "1_var_src_tgt_this",
                "1_var_src_tgt_this_reflexive",
                "2_ent_src_constrain_tgt_var_before_0_lvl",
                "2_ent_src_constrain_tgt_var_before_1_lvl",
                "2_ent_src_constrain_tgt_var_before_2_lvl",
                "2_ent_src_constrain_tgt_var_after_0_lvl",
                "2_ent_src_constrain_tgt_var_after_1_lvl",
                "2_ent_src_constrain_tgt_var_after_2_lvl",
                "2_this_src_constrain_tgt_var_before_0_lvl",
                "2_this_src_constrain_tgt_var_before_1_lvl",
                "2_this_src_constrain_tgt_var_before_2_lvl",
                "2_this_src_constrain_tgt_var_after_0_lvl",
                "2_this_src_constrain_tgt_var_after_1_lvl",
                "2_this_src_constrain_tgt_var_after_2_lvl",
                "1_src_tgt_same_var",
                "1_src_tgt_same_var_reflexive",
                "1_src_tgt_same_this_var_reflexive",
                "1_any_src_tgt_var",
                "not_transitive_ent_tgt",
                "not_transitive_var_tgt",
                "not_transitive_ent_tgt_written",
                "not_transitive_var_tgt_written",
                "optional_transitive_ent_tgt",
                "optional_transitive_var_tgt",
                "optional_transitive_ent_tgt_written",
                "optional_transitive_var_tgt_written",
                "2_var_src_w_same_tgt_ent",
                "self_target",
                "any_target"
            ]
        }, {
            "id": "RulesComponentInheritance",
            "testcases": [
                "1_ent_0_lvl",
                "1_ent_1_lvl",
                "1_ent_2_lvl",
                "1_ent_3_lvl",
                "1_this_0_lvl",
                "1_this_1_lvl",
                "1_this_2_lvl",
                "1_this_3_lvl",
                "1_this_0_lvl_written",
                "1_this_1_lvl_written",
                "1_this_2_lvl_written",
                "1_this_3_lvl_written",
                "1_var_0_lvl",
                "1_var_1_lvl",
                "1_var_2_lvl",
                "1_var_3_lvl",
                "1_var_0_lvl_written",
                "1_var_1_lvl_written",
                "1_var_2_lvl_written",
                "1_var_3_lvl_written",
                "1_ent_1_lvl_self",
                "1_this_1_lvl_self",
                "1_this_1_lvl_written_self",
                "1_var_1_lvl_self",
                "1_var_1_lvl_written_self",
                "1_ent_src_not",
                "1_this_src_not",
                "1_var_src_not",
                "1_this_src_not_written",
                "1_var_src_not_written",
                "first_self",
                "first_down",
                "first_self_down",
                "first_rel_self",
                "first_rel_down",
                "first_rel_self_down"
            ]
        }, {
            "id": "RulesRecycled",
            "testcases": [
                "recycled_vars",
                "recycled_pair_vars",
                "recycled_this_ent_var",
                "has_recycled_id_from_pair"
            ]
        }, {
            "id": "RulesBuiltinPredicates",
            "testcases": [
                "this_eq_id",
                "this_eq_name",
                "this_eq_var",
                "this_eq_id_written",
                "this_eq_id_written_no_match",
                "this_eq_name_written",
                "this_eq_name_written_no_match",
                "this_eq_var_written",
                "var_eq_id",
                "var_eq_name",
                "var_eq_var",
                "var_eq_id_written",
                "var_eq_id_written_no_match",
                "var_eq_name_written",
                "var_eq_name_written_no_match",
                "var_eq_var_written",
                "var_eq_this",
                "this_neq_id",
                "this_neq_name",
                "this_neq_var",
                "this_neq_id_written",
                "this_neq_id_written_no_match",
                "this_neq_name_written",
                "this_neq_name_written_no_match",
                "this_neq_var_written",
                "var_neq_id",
                "var_neq_name",
                "var_neq_var",
                "var_neq_id_written",
                "var_neq_id_written_no_match",
                "var_neq_name_written",
                "var_neq_name_written_no_match",
                "var_neq_var_written",
                "var_neq_this",
                "this_2_neq_id",
                "this_2_neq_name",
                "var_2_neq_id",
                "var_2_neq_name",
                "this_2_neq_id_written",
                "this_2_neq_name_written",
                "var_2_neq_id_written",
                "var_2_neq_name_written",
                "this_2_or_id",
                "this_2_or_name",
                "var_2_or_id",
                "var_2_or_name",
                "this_2_or_id_written",
                "this_2_or_name_written",
                "var_2_or_id_written",
                "var_2_or_name_written",
                "this_match_eq",
                "var_match_eq",
                "this_match_eq_written",
                "this_match_eq_written_self",
                "var_match_eq_written",
                "this_match_neq",
                "var_match_neq",
                "this_match_neq_written",
                "var_match_neq_written",
                "this_match_2_neq",
                "var_match_2_neq",
                "this_match_2_neq_written",
                "var_match_2_neq_written",
                "this_match_2_or",
                "this_match_2_or_written",
                "this_match_3_or",
                "this_match_3_or_written",
                "unresolved_by_name",
                "var_eq_wildcard",
                "var_eq_any",
                "var_eq_wildcard_after_write",
                "var_eq_any_after_write",
                "var_eq_after_var_0_src",
                "2_or_w_eq_this",
                "2_or_w_eq_lookup_var",
                "3_or_w_eq_lookup_var",
                "unwritten_var_error_neq",
                "unwritten_var_error_match"
            ]
        }, {
            "id": "RulesScopes",
            "testcases": [
                "term_w_not_scope_1_term",
                "term_w_not_scope_2_terms",
                "term_w_not_scope_1_term_w_not",
                "term_w_not_scope_2_terms_w_not",
                "term_w_not_scope_1_term_w_var",
                "term_w_not_scope_2_terms_w_var",
                "term_w_not_scope_1_term_w_not_w_var",
                "term_w_not_scope_2_terms_w_not_w_var",
                "term_w_not_scope_2_terms_w_or",
                "term_w_not_scope_3_terms_w_or"
            ]
        }, {
            "id": "RulesTraversal",
            "testcases": [
                "this_self_up_childof",
                "this_up_childof",
                "this_written_self_up_childof",
                "this_written_up_childof",
                "var_self_up_childof",
                "var_up_childof",
                "var_written_self_up_childof",
                "var_written_up_childof",
                "set_var_self_up_childof",
                "set_var_up_childof",
                "set_var_written_self_up_childof",
                "set_var_written_up_childof",
                "ent_self_up_childof",
                "ent_up_childof",
                "implicit_this_self_up_isa",
                "implicit_this_up_isa",
                "implicit_var_self_up_isa",
                "implicit_var_up_isa",
                "implicit_ent_self_up_isa",
                "implicit_ent_up_isa",
                "self_up_2_targets",
                "up_2_targets",
                "self_up_2_targets_diamond",
                "up_2_targets_diamond",
                "written_self_up_2_targets",
                "written_up_2_targets",
                "written_self_up_2_targets_diamond",
                "written_up_2_targets_diamond",
                "2_self_up_terms",
                "2_self_up_terms_2_targets",
                "self_up_empty_table",
                "up_empty_table",
                "self_up_all_owned",
                "up_all_owned",
                "this_self_up_childof_inherited",
                "this_up_childof_inherited",
                "this_written_self_up_childof_inherited",
                "this_written_up_childof_inherited",
                "var_self_up_childof_inherited",
                "var_up_childof_inherited",
                "var_written_self_up_childof_inherited",
                "var_written_up_childof_inherited",
                "ent_self_up_childof_inherited",
                "ent_up_childof_inherited",
                "ent_written_self_up_childof_inherited",
                "ent_written_up_childof_inherited",
                "this_self_up_childof_component",
                "this_up_childof_component",
                "this_written_self_up_childof_component",
                "this_written_up_childof_component",
                "var_self_up_childof_component",
                "var_up_childof_component",
                "var_written_self_up_childof_component",
                "var_written_up_childof_component",
                "this_self_up_childof_recycled_parent",
                "this_up_childof_recycled_parent",
                "this_written_self_up_childof_recycled_parent",
                "this_written_up_childof_recycled_parent",
                "this_self_up_childof_recycled_parent_component",
                "this_up_childof_recycled_parent_component",
                "this_written_self_up_childof_recycled_parent_component",
                "this_written_up_childof_recycled_parent_component",
                "this_self_up_childof_pair",
                "this_up_childof_pair",
                "this_written_self_up_childof_pair",
                "this_written_up_childof_pair",
                "this_self_up_childof_pair_wildcard",
                "this_up_childof_pair_wildcard",
                "this_written_self_up_childof_pair_wildcard",
                "this_written_up_childof_pair_wildcard",
                "this_self_up_childof_pair_tgt_var",
                "this_written_self_up_childof_pair_tgt_var",
                "this_self_up_childof_pair_rel_var",
                "this_written_self_up_childof_pair_rel_var",
                "this_self_up_childof_pair_for_var_written",
                "this_up_childof_pair_for_var_written",
                "this_written_self_up_childof_pair_for_var_written",
                "this_self_up_childof_pair_for_var_written_n_targets",
                "this_written_self_up_childof_pair_for_var_written_n_targets",
                "self_up_2_levels",
                "not_up_disabled",
                "up_2_rel_instances",
                "up_2_rel_instances_match_2nd",
                "up_only_w_owned",
                "this_self_cascade_childof",
                "this_cascade_childof",
                "this_written_self_cascade_childof",
                "this_written_cascade_childof",
                "this_self_cascade_childof_w_parent_flag",
                "this_cascade_childof_w_parent_flag",
                "this_written_self_cascade_childof_w_parent_flag",
                "this_written_cascade_childof_w_parent_flag"
            ]
        }, {
            "id": "SystemPeriodic",
            "testcases": [
                "1_type_1_component",
                "1_type_3_component",
                "3_type_1_component",
                "2_type_3_component",
                "1_type_1_component_1_tag",
                "2_type_1_component_1_tag",
                "2_type_1_and_1_not",
                "2_type_2_and_1_not",
                "2_type_2_and_2_not",
                "4_type_1_and_1_or",
                "4_type_1_and_1_or_of_3",
                "1_type_1_and_1_or",
                "2_type_1_and_1_optional",
                "2_type_2_and_1_optional",
                "6_type_1_and_2_optional",
                "ensure_optional_is_unset_column",
                "ensure_optional_is_null_shared",
                "match_2_systems_w_populated_table",
                "on_period",
                "on_period_long_delta",
                "disabled",
                "disabled_feature",
                "disabled_nested_feature",
                "two_refs",
                "filter_disabled",
                "match_disabled",
                "match_disabled_and_enabled",
                "match_prefab",
                "match_prefab_and_normal",
                "is_shared_on_column_not_set",
                "owned_column",
                "owned_not_column",
                "owned_or_column",
                "shared_column",
                "shared_not_column",
                "shared_or_column",
                "container_dont_match_inheritance",
                "cascade_dont_match_inheritance",
                "not_from_entity",
                "sys_context",
                "get_sys_context_from_param",
                "owned_only",
                "shared_only",
                "is_in_readonly",
                "get_period",
                "and_type",
                "or_type"
            ]
        }, {
            "id": "Timer",
            "testcases": [
                "timeout",
                "interval",
                "shared_timeout",
                "shared_interval",
                "start_stop_one_shot",
                "start_stop_interval",
                "rate_filter",
                "rate_filter_w_rate_filter_src",
                "rate_filter_w_timer_src",
                "rate_filter_with_empty_src",
                "one_shot_timer_entity",
                "interval_timer_entity",
                "rate_entity",
                "nested_rate_entity",
                "nested_rate_entity_empty_src",
                "naked_tick_entity",
                "stop_timer_w_rate",
                "stop_timer_w_rate_same_src",
                "randomize_timers"
            ]
        }, {
            "id": "SystemCascade",
            "testcases": [
                "cascade_depth_1",
                "cascade_depth_2",
                "cascade_depth_2_new_syntax",
                "add_after_match",
                "adopt_after_match",
                "custom_relation_cascade_depth_1",
                "custom_relation_cascade_depth_2",
                "custom_relation_add_after_match",
                "custom_relation_adopt_after_match"
            ]
        }, {
            "id": "SystemManual",
            "setup": true,
            "testcases": [
                "1_type_1_component",
                "no_automerge",
                "dont_run_w_unmatching_entity_query"
            ]
        }, {
            "id": "Tasks",
            "testcases": [
                "no_components",
                "one_tag",
                "from_system",
                "tasks_in_phases"
            ]
        }, {
            "id": "System_w_FromParent",
            "setup": true,
            "testcases": [
                "1_column_from_container",
                "2_column_1_from_container",
                "3_column_2_from_container",
                "2_column_1_from_container_w_not",
                "2_column_1_from_container_w_not_prefab",
                "3_column_1_from_comtainer_1_from_container_w_not",
                "2_column_1_from_container_w_or",
                "select_same_from_container",
                "add_component_after_match",
                "add_component_after_match_and_rematch",
                "add_component_after_match_unmatch",
                "add_component_after_match_unmatch_match",
                "add_component_after_match_2_systems",
                "add_component_in_progress_after_match",
                "add_component_after_match_and_rematch_w_entity_type_expr",
                "add_component_after_match_and_rematch_w_entity_type_expr_in_progress",
                "adopt_after_match",
                "new_child_after_match",
                "realloc_after_match"
            ]
        }, {
            "id": "System_w_Empty",
            "testcases": [
                "2_column_1_from_id",
                "3_column_2_from_id",
                "column_type"
            ]
        }, {
            "id": "System_w_FromSystem",
            "testcases": [
                "2_column_1_from_system",
                "3_column_2_from_system",
                "auto_add_tag"
            ]
        }, {
            "id": "System_w_FromEntity",
            "testcases": [
                "2_column_1_from_entity",
                "task_from_entity",
                "task_not_from_entity"
            ]
        }, {
            "id": "Stats",
            "testcases": [
                "get_world_stats",
                "get_pipeline_stats_before_progress_mini_world",
                "get_pipeline_stats_before_progress",
                "get_pipeline_stats_after_progress_no_systems",
                "get_pipeline_stats_after_progress_1_system",
                "get_pipeline_stats_after_progress_1_inactive_system",
                "get_pipeline_stats_after_progress_2_systems",
                "get_pipeline_stats_after_progress_2_systems_one_merge",
                "get_entity_count",
                "get_pipeline_stats_w_task_system",
                "get_not_alive_entity_count"
            ]
        }, {
            "id": "Run",
            "setup": true,
            "testcases": [
                "run",
                "run_w_param",
                "run_no_match",
                "run_w_offset",
                "run_w_offset_skip_1_archetype",
                "run_w_offset_skip_1_archetype_plus_one",
                "run_w_offset_skip_2_archetypes",
                "run_w_limit_skip_1_archetype",
                "run_w_limit_skip_1_archetype_minus_one",
                "run_w_limit_skip_2_archetypes",
                "run_w_offset_1_limit_max",
                "run_w_offset_1_limit_minus_1",
                "run_w_offset_2_type_limit_max",
                "run_w_offset_2_type_limit_minus_1",
                "run_w_limit_1_all_offsets",
                "run_w_offset_out_of_bounds",
                "run_w_limit_out_of_bounds",
                "run_comb_10_entities_1_type",
                "run_comb_10_entities_2_types",
                "run_w_interrupt",
                "run_staging"
            ]
        }, {
            "id": "MultiThread",
            "setup": true,
            "testcases": [
                "2_thread_1_entity",
                "2_thread_2_entity",
                "2_thread_5_entity",
                "2_thread_10_entity",
                "3_thread_1_entity",
                "3_thread_2_entity",
                "3_thread_5_entity",
                "3_thread_10_entity",
                "4_thread_1_entity",
                "4_thread_2_entity",
                "4_thread_5_entity",
                "4_thread_10_entity",
                "5_thread_1_entity",
                "5_thread_2_entity",
                "5_thread_5_entity",
                "5_thread_10_entity",
                "6_thread_1_entity",
                "6_thread_2_entity",
                "6_thread_5_entity",
                "6_thread_10_entity",
                "2_thread_1_entity_instanced",
                "2_thread_5_entity_instanced",
                "2_thread_10_entity_instanced",
                "2_thread_test_combs_100_entity_w_next_worker",
                "2_thread_test_combs_100_entity",
                "3_thread_test_combs_100_entity",
                "4_thread_test_combs_100_entity",
                "5_thread_test_combs_100_entity",
                "6_thread_test_combs_100_entity",
                "2_thread_test_combs_100_entity_2_types",
                "3_thread_test_combs_100_entity_2_types",
                "4_thread_test_combs_100_entity_2_types",
                "5_thread_test_combs_100_entity_2_types",
                "6_thread_test_combs_100_entity_2_types",
                "change_thread_count",
                "multithread_quit",
                "schedule_w_tasks",
                "reactive_system",
                "fini_after_set_threads",
                "2_threads_single_threaded_system",
                "no_staging_w_multithread",
                "multithread_w_monitor_addon",
                "get_ctx",
                "get_binding_ctx",
                "get_ctx_w_run",
                "get_binding_ctx_w_run",
                "bulk_new_in_no_readonly_w_multithread",
                "bulk_new_in_no_readonly_w_multithread_2",
                "run_first_worker_on_main",
                "run_single_thread_on_main"
            ]
        }, {
            "id": "MultiThreadStaging",
            "setup": true,
            "testcases": [
                "2_threads_add_to_current",
                "3_threads_add_to_current",
                "4_threads_add_to_current",
                "5_threads_add_to_current",
                "6_threads_add_to_current",
                "2_threads_on_add",
                "new_w_count",
                "custom_thread_auto_merge",
                "custom_thread_manual_merge",
                "custom_thread_partial_manual_merge",
                "set_pair_w_new_target_readonly",
                "set_pair_w_new_target_tgt_component_readonly",
                "set_pair_w_new_target_defer",
                "set_pair_w_new_target_tgt_component_defer"
            ]
        }, {
            "id": "MultiTaskThread",
            "setup": true,
            "testcases": [
                "2_thread_1_entity",
                "2_thread_2_entity",
                "2_thread_5_entity",
                "2_thread_10_entity",
                "3_thread_1_entity",
                "3_thread_2_entity",
                "3_thread_5_entity",
                "3_thread_10_entity",
                "4_thread_1_entity",
                "4_thread_2_entity",
                "4_thread_5_entity",
                "4_thread_10_entity",
                "5_thread_1_entity",
                "5_thread_2_entity",
                "5_thread_5_entity",
                "5_thread_10_entity",
                "6_thread_1_entity",
                "6_thread_2_entity",
                "6_thread_5_entity",
                "6_thread_10_entity",
                "2_thread_1_entity_instanced",
                "2_thread_5_entity_instanced",
                "2_thread_10_entity_instanced",
                "2_thread_test_combs_100_entity_w_next_worker",
                "2_thread_test_combs_100_entity",
                "3_thread_test_combs_100_entity",
                "4_thread_test_combs_100_entity",
                "5_thread_test_combs_100_entity",
                "6_thread_test_combs_100_entity",
                "2_thread_test_combs_100_entity_2_types",
                "3_thread_test_combs_100_entity_2_types",
                "4_thread_test_combs_100_entity_2_types",
                "5_thread_test_combs_100_entity_2_types",
                "6_thread_test_combs_100_entity_2_types",
                "change_thread_count",
                "multithread_quit",
                "schedule_w_tasks",
                "reactive_system",
                "fini_after_set_threads",
                "2_threads_single_threaded_system",
                "no_staging_w_multithread",
                "multithread_w_monitor_addon",
                "get_ctx",
                "get_binding_ctx",
                "get_ctx_w_run",
                "get_binding_ctx_w_run",
                "bulk_new_in_no_readonly_w_multithread",
                "bulk_new_in_no_readonly_w_multithread_2",
                "run_first_worker_on_main",
                "run_single_thread_on_main"
            ]
        }, {
            "id": "MultiTaskThreadStaging",
            "setup": true,
            "testcases": [
                "2_threads_add_to_current",
                "3_threads_add_to_current",
                "4_threads_add_to_current",
                "5_threads_add_to_current",
                "6_threads_add_to_current",
                "2_threads_on_add",
                "new_w_count",
                "custom_thread_auto_merge",
                "custom_thread_manual_merge",
                "custom_thread_partial_manual_merge",
                "set_pair_w_new_target_readonly",
                "set_pair_w_new_target_tgt_component_readonly",
                "set_pair_w_new_target_defer",
                "set_pair_w_new_target_tgt_component_defer"
            ]
        }, {
            "id": "Snapshot",
            "testcases": [
                "simple_snapshot",
                "snapshot_after_new",
                "snapshot_after_delete",
                "snapshot_after_new_type",
                "snapshot_after_add",
                "snapshot_after_remove",
                "snapshot_w_include_filter",
                "snapshot_w_exclude_filter",
                "snapshot_w_filter_after_new",
                "snapshot_w_filter_after_delete",
                "snapshot_free_empty",
                "snapshot_free",
                "snapshot_free_filtered",
                "snapshot_free_filtered_w_dtor",
                "snapshot_activate_table_w_filter",
                "snapshot_copy",
                "snapshot_get_ref_after_restore",
                "new_after_snapshot",
                "new_empty_after_snapshot",
                "add_after_snapshot",
                "delete_after_snapshot",
                "set_after_snapshot",
                "restore_recycled",
                "snapshot_w_new_in_onset",
                "snapshot_w_new_in_onset_in_snapshot_table",
                "snapshot_from_stage"
            ]
        }, {
            "id": "Modules",
            "setup": true,
            "testcases": [
                "simple_module",
                "import_module_from_system",
                "import_again",
                "scoped_component",
                "scoped_tag",
                "scoped_system",
                "scoped_entity",
                "name_prefix_component",
                "name_prefix_tag",
                "name_prefix_system",
                "name_prefix_entity",
                "name_prefix_prefab",
                "name_prefix_pipeline",
                "name_prefix_trigger",
                "name_prefix_underscore",
                "lookup_by_symbol",
                "nested_module",
                "module_tag_on_namespace",
                "module_tag_on_namespace_on_add",
                "module_tag_on_namespace_on_add_2_levels",
                "import_monitor_2_worlds",
                "import_monitor_after_mini",
                "import_2_worlds"
            ]
        }, {
            "id": "App",
            "testcases": [
                "app_w_frame_action",
                "app_w_default_frame_action",
                "app_w_set_threads",
                "app_w_set_task_threads",
                "app_w_set_target_fps",
                "app_w_set_frames"
            ]
        }, {
            "id": "Http",
            "testcases": [
                "teardown",
                "teardown_started",
                "teardown_stopped",
                "stop_start"
            ]
        }, {
            "id": "Rest",
            "testcases": [
                "teardown",
                "get",
                "get_cached",
                "get_cached_invalid",
                "try_query",
                "try_query_plan"
            ]
        }, {
            "id": "Metrics",
            "testcases": [
                "member_gauge_1_entity",
                "member_gauge_2_entities",
                "member_gauge_2_entities_1_existing",
                "member_gauge_2_entities_update",
                "member_gauge_w_remove",
                "member_gauge_w_clear",
                "member_gauge_w_delete",
                "id_gauge_1_entity",
                "id_gauge_2_entities",
                "id_gauge_2_entities_1_existing",
                "id_gauge_w_remove",
                "id_gauge_w_clear",
                "id_gauge_w_delete",
                "oneof_gauge_3_entities",
                "oneof_gauge_3_entities_1_existing",
                "oneof_gauge_w_remove",
                "oneof_gauge_w_clear",
                "oneof_gauge_w_delete",
                "oneof_to_snake_case",
                "member_counter",
                "member_auto_counter",
                "id_counter",
                "oneof_counter",
                "metric_description",
                "id_count",
                "id_target_count",
                "metric_instance_has_doc_name",
                "metric_nested_member",
                "metric_nested_member_counter",
                "metric_nested_member_counter_increment",
                "id_w_member_same_type",
                "id_w_member_mismatching_type",
                "pair_member_rel_type",
                "pair_member_tgt_type",
                "pair_dotmember_rel_type",
                "pair_dotmember_tgt_type",
                "pair_member_counter_increment"
            ]
        }, {
            "id": "Alerts",
            "testcases": [
                "one_active_alert",
                "two_active_alerts",
                "alert_message",
                "alert_message_w_this_var",
                "alert_message_w_var",
                "alert_message_w_changed_var",
                "set_doc_name",
                "set_brief",
                "alert_instance_has_doc_name",
                "reraise_alert",
                "info_severity",
                "warning_severity",
                "error_severity",
                "expire_after_retain",
                "revive_w_retain",
                "severity_filter",
                "two_severity_filters",
                "severity_filter_w_var",
                "severity_filter_w_var_change_var",
                "member_range_warning",
                "member_range_error",
                "member_range_warning_error",
                "member_range_error_w_warning_severity",
                "member_range_error_w_severity_filter",
                "member_range_warning_w_severity_filter",
                "member_range_pair_id",
                "member_range_invalid_member",
                "member_range_invalid_member_child",
                "member_range_invalid_type",
                "member_range_invalid_member_type",
                "member_range_no_range",
                "member_range_alert_two_instances",
                "member_range_from_var",
                "member_range_from_var_after_remove",
                "retained_alert_w_dead_source",
                "alert_counts"
            ]
        }]
    }
}
